package com.xbongbong.saas.enums;

import lombok.Getter;

import java.util.Objects;

/**
 * @author zcp
 * @version v1.0
 * @since v1.0
 */
@Getter
public enum FormTypeEnum {
    //单模板
    SINGLE_TEMPLATE("1","singleTemplate"),
    //多模板，如客户、合同，用户可以自己新建模板
    MULTI_TEMPLATE("2","multiTemplate"),
    /*
    与前端联调，暂不增加该类型
    //特殊多模板，经销商开发时，增加一种支持经销商业务的模板，展现形式为多模板，但是不允许用户新建模板，也无法启用关闭
    MULTI_SINGLE_TEMPLATE("3","multiSingleTemplate"),
    */
    ;

    FormTypeEnum(String code, String formType) {
        this.code = code;
        this.formType = formType;
    }

    private String code;
    private String formType;

    /**
     * 判断业务是否为正常多模板，如客户、合同、机会
     * @param businessType 业务类型
     * @return java.lang.Boolean
     * @since v1.0
     * @version v经销商一期 从RedundantTemplateTypeEnum移入，未做改动，保证老的逻辑正确性 by zcp
     */
    public static Boolean isMultiTemplate(Integer businessType){
        return Objects.equals(RedundantTemplateTypeEnum.CUSTOMER.getCode(),businessType)
                || Objects.equals(RedundantTemplateTypeEnum.CONTRACT.getCode(),businessType)
                || Objects.equals(RedundantTemplateTypeEnum.SALES_OPPORTUNITY.getCode(),businessType)
                || Objects.equals(RedundantTemplateTypeEnum.CLUE.getCode(),businessType)
                || Objects.equals(RedundantTemplateTypeEnum.WORK_ORDER_V2.getCode(),businessType)
                || Objects.equals(RedundantTemplateTypeEnum.RECEIPT_ORDER.getCode(), businessType);
    }
    /**
     * 判断业务是否为特殊多模板，如开启了经销商后的回款单、应收款等
     * @param businessType 业务类型
     * @return java.lang.Boolean
     * @author zcp
     * @since v1.0
     * @version v1.0
     */
    public static Boolean isMultiSingleTemplate(Integer businessType){
        return Objects.equals(RedundantTemplateTypeEnum.PAYMENT.getCode(), businessType) || Objects.equals(RedundantTemplateTypeEnum.PAYMENT_SHEET.getCode(), businessType) || Objects.equals(RedundantTemplateTypeEnum.INVOICE.getCode(), businessType) || Objects.equals(RedundantTemplateTypeEnum.PAYMENT_TASK.getCode(), businessType)
                || Objects.equals(RedundantTemplateTypeEnum.CONTRACT_OUTSTOCK.getCode(), businessType);
    }
}
